As software applications, including the databases utilized by such applications for data storage and retrieval, become more robust, defects inserted by the application developers tend to become more numerous thereby degrading application quality and performance. For example, large scale applications utilizing large databases with numerous tables and columns inherently provide increased opportunity for allocating an inappropriate amount of memory for column data types too large for the data contained, or intended to be contained, therein. As another example, with larger applications there is generally more opportunity for redundant data and inconsistent dependencies resulting in non-normalized databases and inaccurate data contained therein. Moreover, large scale development efforts typically require a team of developers which may not be utilizing the same naming conventions and/or complying with established guidelines and best practices, thereby increasing the risk of defective code.
Current practices for identifying defects in a database are limited to manual review of the SQL code defining the database which requires substantial resources, particularly in terms of software developer time. Such review is also inherently limited in scope, including in the types of defects that are possible to identify, resulting in code which is not suitable for its intended purpose and/or poor performing and inefficient